class Solution(object):
    """
        方法：贪心算法
        
        逻辑:
            1. 维护三个变量:
               - step: 记录跳跃次数
               - cur_right: 当前能到达的最远位置
               - next_right: 下一步能到达的最远位置
            2. 遍历数组到倒数第二个位置:
               - 更新next_right为当前位置能跳到的最远距离
               - 当到达cur_right时，更新cur_right为next_right并增加step
            3. 返回最小跳跃次数step
        
        Args:
            nums: List[int], 非负整数数组，表示在每个位置可以跳跃的最大长度
            
        Returns:
            int: 到达最后一个位置的最小跳跃次数
            
        Time: O(n)，其中n为数组长度，只需要遍历一次数组
        
        Space: O(1)，只使用了常数个变量
        """
    def jump(self, nums):
        step = 0
        cur_right = 0
        next_right = 0
        for i in range(len(nums) - 1):
            next_right = max(next_right, nums[i] + i)
            if i == cur_right:
                cur_right = next_right
                step += 1
        return step
        